package DigitalNetwork;

import java.util.ArrayList;

/**
 * A digitalis halozatban logika "nem" muveletet megvalosito kapu-elem.
 * <p>
 *
 * </p>
 *
 * @author Ableda Peter
 * @author Andrasi Istvan
 * @author Kamaras Karoly
 * @author Pora Szilard
 *
 * @version 1.0 Build 2011.04.17
 */
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public class NOTGate extends Gate {

	/** [Konstruktor]
	 * Letrehozza a be- es kimeneti portokat.
	 *
	 * @param _ID A kapu neve.
     * @param x Az elem poziciojanak vizszintes komponense.
     * @param y Az elem poziciojanak fuggoleges komponense.
	 */
	//==========================================================================
	public NOTGate(String _ID, int x, int y) {
        super(x,y);
		// Beallitjuk az ID-t.
		this.ID = _ID;

		// Letrehozzuk a bementi portok listajat.
		this.inputs = new ArrayList<PortIn>();

		// Letrehozzuk a bemenetet.
		inputs.add(new PortIn(this.ID + "_i0", this));

		// Letrehozzuk a kimenti portok listajat.
		this.outputs = new ArrayList<PortOut>();
        
		// Letrehozzuk a kimenetet.
		outputs.add(new PortOut(this.ID + "_o0", this));
		
		Main.printMessage("#" + this.getID() + " NOT kapu letrehozva");
	}
	//==========================================================================

	/**
	 * Frissiti a kapu kimenetet a bemenete alapjan.
	 * <p>
	 *
	 * </p>
	 */
	@Override
	//==========================================================================
	public void updateOutput() {
		// Frissitjuk a kimenetet.
		outputs.get(0).setState(!(inputs.get(0).getState()));
	}
	//==========================================================================

    /**
     * Vissza adja az adott elem tipusat.
	 *
	 * @return String Az elem tipusa.
	 */
	@Override
	//==========================================================================
	public String getType() {
		return "NOTGate";
	}
	//==========================================================================
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
